
//101 Symmetric Tree
/*
判断一个二叉树是否对称

Input:
		1
	   / \
	  2   2
	 / \ / \
	3  4 4  3 
Output: true

对称：
（1）如果两个子树都为空指针，则它们相等或对称
（2）如果两个子树只有一个为空指针，则它们不相等或不对称
（3）如果两个子树根节点的值不相等，则它们不相等或不对称
（4）根据相等或对称要求，进行递归处理


*/
// 主函数
bool isSymmetric(TreeNode *root)
{
	return root ? isSymmetric(root->left, root->right) : true;
}
// 辅函数
bool isSymmetric(TreeNode *left, TreeNode *right)
{
	if (!left && !right)
	{
		return true;
	}
	if (!left || !right)
	{
		return false;
	}
	if (left->val != right->val)
	{
		return false;
	}

	//
	return isSymmetric(left->left, right->right) && isSymmetric(left->right,right->left);
}
